国防科技大学 编译原理 第2讲 高级程序设计语言概述
课程主页:
https://www.icourse163.org/course/NUDT-1003101005?tid=1460976445
这次回顾第2讲:高级程序设计语言概述。
第2讲 高级程序设计语言概述
常用的高级程序设计语言
语言 | 特点 |
---|---|
FORTRAN | 数值计算 |
COBOL | 事务处理 |
PASCAL | 结构化程序设计 |
LISP | 函数式程序设计 |
PROLOG | 逻辑程序设计 |
C | 系统程序设计 |
Smalltalk | 面向对象程序设计 |
Java | Internet应用,可移植性 |
Python | 解释型 |
高级程序设计语言的优点
- 相对机器语言或汇编语言,高级程序设计语言
- 更接近于数学语言和工程语言,更直观、自然和易于理解
- 更容易验证其正确性、改错
- 编写程序的效率更高
- 更容易移植
程序设计语言的定义
程序设计语言的定义包括以下几个方面
- 语法
- 语义
- 语用
这里只讨论前两者。
语法
程序本质上是一组字符集上的字符串
语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序
词法规则:单词符号的形成规则
- 单词符号是语言中具有独立意义的最基本结构
- 一般包括:常数、标识符、基本字、算符、界符等
- 描述工具:有限自动机
语法规则:语法单位的形成规则
语法单位通常包括:表达式、语句、分程序、过程、函数、程序等;
描述工具:上下文无关文法
语法例子,表示算数表达式:
语法规则和词法规则定义了程序的形式结构
定义语法单位的意义属于语义问题
语义
- 语义
- 一组规则,用它可以定义一个程序的意义
- 描述方法
- 自然语言描述
- 二义性、隐藏错误和不完整性
- 形式描述(从略)
- 操作语义
- 指称语义
- 代数语义
- 自然语言描述
程序语言的基本功能和层次结构
- 程序,本质上说是描述一定数据的处理过程
- 程序语言的基本功能
- 描述数据和对数据的运算
- 层次结构
高级程序设计语言的一般特性
高级语言的分类
- 强制式语言(Imperative Languge)/过程式语言
- 命令驱动,面向语句
- FORTRAN、C、Pascal,Ada
- 应用式语言(Applicative Language)
- 注重程序所表示的功能,而不是一个语句接一个语句地执行
- LISP、ML
- 基于规则的语言(Rule-based Language)
- 检查一定的条件,当它满足值,则执行适当的动作
- Prolog
- 面向对象语言(Object-Oriented Language)
- 封装、继承和多态性
- Smalltalk,C++,Java
程序结构
这部分介绍了FORTRA,PASCAL,JAVA的程序结构,细节从略。
数据结构与操作
- 数据类型通常包括三要素
- 用于区别这种类型数据对象的属性
- 这种类型的数据对象可以具有的值
- 可以作用于这种类型的数据对象的操作
标识符与名字
- 标识符
- 以字母开头的,由字母数字组成的字符串
- 名字
- 标识程序中的对象
这里老师举了一个很形象的例子:
Jordan这个单词只是个标识符,绑定之后可以指运动员乔丹或者国家约旦。
名字
- 名字的意义和属性
- 值:单元中的内容
- 属性:类型和作用域
- 名字的说明方式
- 由说明语句来明确规定
- int score
- 隐含说明
- FORTRAN 以I,J,K,…N为首的名字代表整型,否则为实型
- 动态确定
- 走到哪里,是什么,算什么
- 由说明语句来明确规定
标识符
- 标识符
- 以字母开头的,由字母数字组成的字符串
- 标识符与名字两者有本质区别
- 标识符是语法概念
- 名字有确切的意义和属性
数据结构
这部分简介了基本的数据结构,这里只回顾一个不太熟悉的概念、
- 内情向量
- 登记维数,各维的上、下限,首地址,以及数组(元素)的类型等信息
语句与控制结构
表达式
表达式由运算量(也称操作数,即数据引用或函数调用)和算符(运算符,操作符)组成
形式:中缀、前缀、后缀
表达式形成规则
- 变量(包括下标变量)、常数是表达式。
- 若$\mathrm E_1,\mathrm E_2$为表达式,$θ$是一个二元算符,则$\mathrm E_1 θ\mathrm E_2$是表达式。
- 若$\mathrm E$是表达式,$θ$为一元算符,则$θ\mathrm E$(或$\mathrm Eθ$)是表达式。
- 若$\mathrm E$是表达式,则$(\mathrm E)$是表达式。
- 变量(包括下标变量)、常数是表达式。
算符的优先次序
- 一般的规定
- PASCAL:左结合A+B+C=(A+B)+C
- FORTRAN:对于满足左、右结合的算符可任取一种,如A+B+C就可以处理成(A+B)+C,也可以处理成A+(B+C)
- 注意两点
- 代数性质能引用到什么程度视具体的语言而定
- 在数学上成立的代数性质在计算机上未必完全成立
- A + B = B + A
语句
赋值语句
- A := B
- 名字的左值:该名字代表的存储单元的地址
- 名字的右值:该名字代表的存贮单元的内容
控制语句
无条件转移语句
goto L
条件语句
if B then S if B then S1 else S2
循环语句
while B do S repeat S until B for i:=E1 step E2 until E3 do S
过程调用语句
call P(X1, X2, ... ,Xn)
返回语句
return (E)
语句的分类
按功能分类
- 执行语句:描述程序的动作
- 说明语句:定义各种不同数据类型的变量或运算,定义名字的性质
形式
简单句:不包含其他语句成分的基本句
A = B + C ; goto 105 ;
复合句:句中有句的语句
while (i >= 0) { j = i * 10; i++; }
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemonzzz!
评论
ValineLivere